<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Set遍历</h1>
    <p>使用for...of循环对set进行遍历。</p>
    <h2>遍历的概念</h2>
    <ul>
        <li>如果一个对象想要被遍历，需要给它装载遍历函数，使用[Symbol.iterator]来进行装载。</li>
        <li>Set提供了，values()，keys()，enties()三种遍历方法。但实际上Set中，它的值就是它的键。</li>
    </ul>
    <h2>作业</h2>
    <dl>
        <dt>必做</dt>
        <dd>使用Set获取两个数组的并集。</dd>
        <dd>使用Set和filter()遍历函数，获取两个数组的交集。</dd>
        <dd>使用Set和filter()遍历函数，获取两个数组的差集。</dd>
    </dl>
    <script>
        let set = new Set([3,24,5,6,7,1]);
        for (let v of set) {
            console.log(v);
        }
        
        console.log("set也可以使用forEach方法：并不代表set是数组，只是它装载了forEach方法。")
        set.forEach(v => console.log(v));

        // map方法没有办法使用
        // let arr2 = set.map(v => v * 2);
        // console.log(arr2);

       
        let arr = Array.from(set);
        arr.forEach(v => console.log(v));


        let keys = set.keys();
        let values = set.values();
        console.log(keys == values); // false

        console.log("--------------分隔符：keys()---------------------")
        for (let v of set.keys()) {
            console.log(v);
        }

        console.log("--------------分隔符：values()---------------------")
        for (let v of set.values()) {
            console.log(v);
        }
        // 以上遍历的结果一样

        console.log("--------------分隔符：entries()---------------------")
        let enties = set.entries(); // 遍历，键值对对象。
        console.log(enties);
        for (let v of enties) {
            console.log(v);
        }

        // 访问遍历方法
        let fun = set[Symbol.iterator];
        console.log(fun);

        console.log(fun == set.values); // true
        console.log("--------------分隔符：[Symbol.iterator]()---------------------")
        for (let v of set[Symbol.iterator]()) {
            console.log(v);
        }

        console.log("set.keys == set.values",set.keys == set.values); // true

    </script>
</body>
</html>